/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import constantes.Constantes;

/**
 *
 * @author jramirez
 */
public class Validaciones {

    public static boolean validarSoloNumeros(String number) {
        return number.matches("[0-9]*");
    }

    public static boolean validarSoloLetrasNumeros(String cadena) {
        return cadena.matches("[a-zA-Z0-9]*");
    }

    public static boolean validarNombres(String cadena) {
        return cadena.matches("[a-zA-Z]*\\s*[a-zA-Z]*\\s*[a-zA-Z]*");
    }

    public static boolean validarDireccion(String cadena) {
        return cadena.matches("[a-zA-Z0-9]*\\s*[a-zA-Z0-9]*\\s*[a-zA-Z0-9]*\\s*[a-zA-Z0-9]*\\s*[a-zA-Z0-9]*\\s*[a-zA-Z0-9]*\\s*[a-zA-Z0-9]*\\s*[a-zA-Z0-9]*\\s*[a-zA-Z0-9]*\\s*[a-zA-Z0-9]*\\s*[a-zA-Z0-9]*");
    }

    public static boolean validarEmail(String correo) {
        boolean exito = false;
        String input = correo;
        // comprueba que no empieze por punto o @
        /*
         * El caracter '\' sirve preceder a expresiones con valores de escape, así \\ equivale a \ o \{ equivale a {
         * El caracter '^' indica comienzo de una línea
         * El caracter '|' representa un O lógico
         */
        Pattern p = Pattern.compile("^\\.|^\\@");
        Matcher m = p.matcher(input);
        if (m.find()) {
            System.err.println("Las direcciones email no empiezan por punto o @");
            return false;
        }
        //comprueba que no empieze por www.
        p = Pattern.compile("^www\\.");
        m = p.matcher(input);
        if (m.find()) {
            System.out.println("Los emails no empiezan por www");
            return false;
        }
        // comprueba que contenga @
        p = Pattern.compile("\\@");
        m = p.matcher(input);
        if (!m.find()) {
            System.out.println("La cadena no tiene arroba");
            return false;
        }

        //Comprueba que no contenga caracteres prohibidos
        /*
         * El caracter '+' representa una o más veces
         * El caracter '^' dentro de los corchetes es un NOT, permite encontrar cualquier carácter que NO se encuentre dentro del grupo indicado
         */
        p = Pattern.compile("[^A-Za-z0-9\\.\\@_\\-~#]+");
        m = p.matcher(input);
        StringBuffer sb = new StringBuffer();
        boolean resultado = m.find();
        boolean caracteresIlegales = false;
        while (resultado) {
            caracteresIlegales = true;
            m.appendReplacement(sb, "");
            resultado = m.find();
        }

        // Añade el ultimo segmento de la entrada a la cadena
        m.appendTail(sb);

        input = sb.toString();
        if (caracteresIlegales) {
            System.out.println("La cadena contenía caracteres ilegales que han sido suprimidos");
        } else {
            exito = true;
        }
        return exito;
    }
    
    public static boolean validarLongitudCampo(String pCampo, int longitud, int pTipo) {
        boolean resultado = false;
        int longitudCampo = pCampo.length();
        if (pTipo == Constantes.longitudIgual_A) {
            if (longitudCampo == longitud) {
                resultado = true;
            }
        }
        if (pTipo == Constantes.longitudMenor_Que) {
            if (longitudCampo < longitud) {
                resultado = true;
            }
        }
         if (pTipo == Constantes.longitudMayor_Que) {
            if (longitudCampo >= longitud) {
                resultado = true;
            }
        }
        return resultado;
    }

    public static boolean validarEsDouble(String pDouble)
    {
        boolean resultado= false;
        double numero= 0.0;
        try
        {
            numero = Double.parseDouble(pDouble);
            resultado=true;
        }
        catch(Exception ex)
        {
            
        }
        return resultado;
    }
}
